package dao;

import java.util.List;

import pojo.Comment;
import pojo.Song;
import pojo.SongList;
import pojo.UpdatedData;
import pojo.User;

public interface InterfaceDB {
	// 注册
	/**
	 * 用户注册
	 * @param user 即User，包括用户的各种信息
	 * @return 如果成功返回true;否则返回false
	 */
	public boolean addUser(User user);

	// 登录，如果失败则User=null
	/**
	 * 登录
	 * @param userName 用户名
	 * @param password 密码
	 * @return 如果登录成功则返回User信息;否则User为空
	 */
	public User findUser(String userName, String password);

	// 查找User，如果失败则User=null
	/**
	 * 查找用户信息
	 * @param userId 用户Id
	 * @return 如果成功，则返回User信息;否则User为空
	 */
	public User findUser(int userId);

	// 新建歌单
	/**
	 * 用户新建歌单
	 * @param uid 用户Id
	 * @param songListName	创建的歌单名
	 * @param createdTime	创建时间
	 * @return 如果创建成功，则返回true;否则为false
	 */
	public boolean addSongList(int uid, String songListName, String createdTime);

	// 删除歌单
	/**
	 * 用户删除歌单
	 * @param songListId 歌单Id
	 * @return 删除成功，则返回true;否则为false;
	 */
	public boolean deleteSongList(int songListId);

	// 修改歌单
	/**
	 * 修改歌单信息
	 * @param songListId	歌单ID
	 * @param songListName	修改后的歌单名称
	 * @param description	歌单描述
	 * @param modifiedTime	修改时间
	 * @return	修改成功则返回true;否则返回false;
	 */
	public boolean updateSongList(int songListId, String songListName, String description, String modifiedTime);

	// 查找歌单
	/**
	 * 查找歌单
	 * @param userId	用户Id
	 * @return	UpdatedData
	 */
	public UpdatedData findAllSongs(int userId);

	// 查看评论
	/**
	 * 获取歌曲评论
	 * @param songId	歌曲Id
	 * @return	List<Comment>
	 */
	public List<Comment> findComment(int songId);

	// 增加评论
	/**
	 * 添加歌曲评论
	 * @param comment	评论信息
	 * @return	评论成功则返回true;否则返回false
	 */
	public boolean addCommnet(Comment comment);

	// 删除评论
	/**
	 * 删除评论
	 * @param commentId	评论Id
	 * @return	删除成功则返回true;否则返回false
	 */
	public boolean deleteComment(int commentId);

	// 歌单增加歌曲
	/**
	 * 用户歌单增加歌曲
	 * @param songId	歌曲Id
	 * @param songListId	歌单Id
	 * @return	增加成功则返回true;否则返回false
	 */
	public boolean addSong_SongList(int songId, int songListId);
	
	/**
	 * 删除歌单所有歌曲
	 * @param songListId	歌单Id
	 * @return	删除成功则返回true;否则返回false
	 */
	
	public boolean deleteSong_SongList(int songListId);
	// 删除歌单
	/**
	 * 删除歌单中的歌曲
	 * @param songId	歌曲Id
	 * @param songListId	歌单Id
	 * @return	删除成功则返回true;否则返回false
	 */
	public boolean deleteSong_SongList(int songId, int songListId);
	// 查询歌曲
	/**
	 * 查询歌曲
	 * @param title	字符可以是歌曲名,歌手名,专辑名
	 * @return	返回歌曲信息
	 */
	public List<Song> findSongs(String title);
	// 用户登录
	/**
	 * 用户登录
	 * @param userName	用户名
	 * @param password	密码
	 * @return	返回UpdatedData
	 */
	public UpdatedData findAllSongs(String userName, String password);
	/**
	 * 查询用户歌单
	 * @param userId	用户Id
	 * @return	返回List<SongList>
	 */
	public List<SongList> findSongLists(int userId);

	/**
	 * 歌单查询歌曲信息
	 * @param songLists	List<SongList>歌单信息
	 * @return	返回List<Song>
	 */
	public List<Song> findSongsByUser(List<SongList> songLists);
	
	/**
	 * 关闭数据库连接
	 */
	public void close();
	
}
